<?php
namespace app\official\controller;

//引入微信扩展类
use mikkle\tp_wechat\Wechat;
use mikkle\tp_wechat\WechatApi;

use \think\View;

//让当前的控制器来继承微信的接口类
class Index extends WechatApi
{
    //创建一个配置
    protected $options = [
        'token'=>'ASK',
        'appid'=>'wx65f1a9d0992a8a45',
        'appsecret'=>'6c6e7735eef43ad2f973e3f6ec447bc4',
        'encodingaeskey'=>'',
    ];

    //网站第一次匹配 true 1为匹配 第二次就改为false
    protected $valid = false;

    //是否开启钩子
    protected $isHook = false;

    public function __construct()
    {
        parent::__construct();

        $this->view = new View();

        $this->request = request();
    }

    //服务器对接的方法
    public function auth()
    {
        //调用父类的index方法 里面就有签名验证的过程
        $this->index();

        //首次关注回复信息
        $subscribe = $this->returnEventSubscribe();

        //weObj 内部对象
        //text 设置要发送的文本
        //reply  发送信息给微信服务器
        $this->weObj->text($subscribe)->reply();

        //调用关键词回复的方法
        $this->returnMessageText();

        //调用地理位置信息
        $this->returnMessageLocation();
    }

    //创建自定义菜单的方法
    public function menu()
    {
        //封装微信的自定义菜单，将封装好的菜单的数据 发送给微信，让微信接收到菜单数据后，对我们公众号来进行设置
        $menu = [
            "button" => [
                //第一个按钮
                [
                    'type' => 'view',  //页面跳转
                    'name' => '百度首页',  //页面名称
                    'url' => 'https://www.baidu.com' //跳转地址
                ],
                //第二个按钮
                [
                    "name" => '二级菜单',
                    "sub_button" => [
                        [
                            //触发一个点击事件 可以发送一个关键词
                            'type' => 'click',
                            'key' => 'V1001_GOOD',  //点击按钮后发送过去的关键词
                            'name' => '点赞事件'
                        ]
                    ]
                ],
                //第三个按钮
                [
                    'name' => '扫码事件',
                    'sub_button' => [
                        [
                            'type' => 'scancode_waitmsg', //扫码类型
                            'name' => '扫码类型',
                            "key" => "rselfmenu_0_0", 
                        ],
                        [
                            'type' => 'pic_sysphoto', //拍照类型
                            'name' => '系统拍照',
                            'key' => 'rselfmenu_1_0'
                        ]
                    ]
                ]
            ]
        ];

        //将php数组转换为json 然后中文 不转码
        $json = json_encode($menu, JSON_UNESCAPED_UNICODE);

        // 将菜单数据发送给微信的服务器，让公众号生成自定义菜单
        $result = Wechat::menu()->createMenu($json);

        if($result)
        {
            echo '自定义菜单创建成功';
        }else
        {
            echo '自定义菜单创建失败';
        }
    }

    //发送模板消息的方法
    public function send()
    {
        if($this->request->isPost())
        {
            $code = $this->request->param('code', '暂无订单号');
            $createtime = $this->request->param('createtime', date("Y-m-d", time()));
            $content = $this->request->param('content', '');

            //先要组装模板消息
            $data = [
                'touser' => 'oUfBK5g5wmdfK7KukyNienMw7ACI',  //接收方的openid
                'template_id' => 'gj-2kQuSyxEjWGCIvSYKYjL7fLEvbC14jbujRjB6XtA', //模板id
                'url' => 'https://www.baidu.com', //点击模板详情跳转的地址
                "topcolor" => "#FF0000", //内容颜色
                'data' => [
                    'code' => [  //订单号
                        'value' => "订单号：".$code,
                        'color' => '#fff'
                    ],
                    'createtime' => [ //订单时间
                        'value' => "订单时间：".$createtime,
                        'color' => '#173177',
                    ],
                    'content' => [
                        'value' => "订单备注：".$content,
                        'color' => '#FFFF00'
                    ]
                ]
            ];

            //将模板消息转换为json  防止中文被转换
            $json = json_encode($data, JSON_UNESCAPED_UNICODE);

            //发送模板消息
            $result = Wechat::message()->sendTemplateMessage($json);

            if($result)
            {
                echo '发送模板消息成功';
                exit;
            }else
            {
                echo '发送模板消息失败';
                exit;
            }

        }
        return $this->view->fetch();
    }
}
